home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / gdb-4.5 / dist / gdb / vx-share / xdr_ptrace.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-28  |  3.7 KB  |  172 lines

  1. /* xdr_ptrace.c  - xdr routines for remote ptrace calls */
  2.  
  3. /* Copyright 1984,1985,1986,1987,1988,1989 Wind River Systems, Inc. */
  4. /* extern char copyright_wind_river[]; static char *copyright=copyright_wind_river;*/
  5.  
  6. /*
  7. modification history
  8. --------------------
  9. 01a,05jun90,llk  extracted from xdr_ptrace.h, version 01c.
  10. */
  11.  
  12. #include <vxWorks.h>
  13. #include <rpc/rpc.h>
  14. #include <xdr_ptrace.h>
  15.  
  16. #define MAX_LEN 32000
  17.  
  18. /********************************************************************
  19. *
  20. * xdr_regs_ptr -
  21. *
  22. * xdr routine to get regs* branch of discriminated union ptrace_info
  23. *
  24. */
  25.  
  26. LOCAL bool_t xdr_regs_ptr(xdrs,objp)
  27.     XDR *xdrs;
  28.     struct regs **objp;
  29.     {
  30.     return (xdr_pointer(xdrs, (char **) objp, sizeof(struct regs), xdr_regs));
  31.     } /* xdr_regs_ptr */
  32.  
  33. /********************************************************************
  34. *
  35. * xdr_fp_status_ptr -
  36. *
  37. * xdr routine for fp_status * branch of discrimanated union
  38. *
  39. */
  40.  
  41. LOCAL bool_t xdr_fp_status_ptr(xdrs,objp)
  42.     XDR *xdrs;
  43.     struct fp_status **objp;
  44.     {
  45.     return(xdr_pointer(xdrs, (char **) objp, sizeof(struct fp_status), 
  46.         xdr_fp_status));
  47.     } /* xdr_fp_status_ptr */
  48.  
  49. #ifndef I80960
  50. /********************************************************************
  51. *
  52. * xdr_fpa_regs_ptr - 
  53. *
  54. * xdr routine for fpa_regs* branch of ptrace_info
  55. *
  56. */
  57.  
  58. LOCAL bool_t xdr_fpa_regs_ptr(xdrs,objp)
  59.     XDR *xdrs;
  60.     struct fpa_regs **objp;
  61.     {
  62.     if (! xdr_pointer(xdrs, (char **) objp, sizeof(struct fpa_regs), 
  63.                   xdr_fpa_regs)) 
  64.     return(FALSE);
  65.     else
  66.     return(TRUE);
  67.     } /* xdr_fpa_regs_ptr */
  68. #endif
  69.  
  70. /********************************************************************
  71. *
  72. * xdr_c_bytes_ptr -
  73. *
  74. * xdr routine for counted bytes branch of ptrace_info
  75. *
  76. */
  77.  
  78. LOCAL bool_t xdr_c_bytes_ptr(xdrs,objp)
  79.     XDR *xdrs;
  80.     C_bytes **objp;
  81.     {
  82.     return(xdr_pointer(xdrs, (char **) objp, sizeof(C_bytes), xdr_c_bytes));
  83.     } /* xdr_c_bytes_ptr */
  84.  
  85. /********************************************************************
  86. *
  87. * xdr_ptrace_info -
  88. *
  89. * xdr routine for discriminated union ptrace_info
  90. *
  91. */
  92.  
  93. bool_t xdr_ptrace_info(xdrs,objp)
  94.     XDR *xdrs;
  95.     Ptrace_info *objp;
  96.     {
  97.     static struct xdr_discrim choices[] = 
  98.     {
  99.         { (int) REGS, xdr_regs_ptr },
  100.         { (int) FPREGS, xdr_fp_status_ptr },
  101. #ifndef I80960
  102.         { (int) FPAREGS, xdr_fpa_regs_ptr },
  103. #endif
  104.         { (int) DATA, xdr_c_bytes_ptr },
  105.         { __dontcare__, NULL }
  106.     };
  107.  
  108.     return(xdr_union(xdrs, (enum_t *) &objp->ttype, 
  109.     (char *) &objp->more_data, choices, xdr_void));
  110.     } /* xdr_ptrace_info */
  111.  
  112. /********************************************************************
  113. *
  114. * xdr_rptrace - 
  115. *
  116. * xdr routine for remote ptrace data into server
  117. *
  118. */
  119.  
  120. bool_t xdr_rptrace(xdrs,objp)
  121.     XDR *xdrs;
  122.     Rptrace *objp;
  123.     {
  124.     if (! xdr_int(xdrs, &objp->pid)) 
  125.     return(FALSE);
  126.     if (! xdr_int(xdrs, &objp->data)) 
  127.     return(FALSE);
  128.     if (! xdr_int(xdrs, &objp->addr)) 
  129.     return(FALSE);
  130.     if (! xdr_ptrace_info(xdrs, &objp->info)) 
  131.     return(FALSE);
  132.  
  133.     return(TRUE);
  134.     } /* xdr_rptrace */
  135.  
  136. /********************************************************************
  137. *
  138. * xdr_ptrace_return - 
  139. *
  140. * xdr routine for remote ptrace data returned by server
  141. *
  142. */
  143.  
  144. bool_t xdr_ptrace_return(xdrs, objp)
  145.     XDR *xdrs;
  146.     Ptrace_return *objp;
  147.     {
  148.     if (! xdr_int(xdrs, &objp->status)) 
  149.     return(FALSE);
  150.     if (! xdr_int(xdrs, &objp->errno)) 
  151.     return(FALSE);
  152.     if (! xdr_ptrace_info(xdrs, &objp->info)) 
  153.     return(FALSE);
  154.  
  155.     return(TRUE);
  156.     } /* xdr_ptrace_return */    
  157.  
  158. /********************************************************************
  159. *
  160. * xdr_c_bytes -
  161. *
  162. * xdr routine for counted bytes  
  163. *
  164. */
  165. bool_t xdr_c_bytes(xdrs,objp)
  166.     XDR *xdrs;
  167.     C_bytes *objp;
  168.     {
  169.     return(xdr_bytes(xdrs, &objp->bytes, (u_int *) &objp->len, MAX_LEN));
  170.     } /* xdr_c_bytes */
  171.  
  172.